// component/rImg/index.js
/**
 * 监听元素是否出现在屏幕
 * @param { String } elName 所在的节点
 * @param { String } attr 需要获取的属性值
 *  {
 *      dataset    // 节点的dataset
 *      width      // 节点的宽度
 *      height     // 节点的高度
 *      scrollLeft // 节点的水平滚动位置
 *      scrollTop  // 节点的竖直滚动位置
 *      scrollX    // 节点 scroll-x 属性的当前值
 *      scrollY    // 节点 scroll-y 属性的当前值
 *
 *      // 此处返回指定要返回的样式名
 *      res.margin
 *      res.backgroundColor
 *      res.context    // 节点对应的 Context 对象
 * }
 * @param { Boolean } isComponent 是否在组建内使用
 * 
 * @return {Function} 一个promise
 */

function listenEltoScreen({
    elName = '',
    attr = '',
    value = '',
    isComponent = {}
} = {}) {
    return new Promise((resolve) => {
        const query = !isComponent ? wx.createIntersectionObserver() : this.createIntersectionObserver()

        query.relativeToViewport({
            [attr]: value
        }).observe(elName, (res) => {
            resolve(res)
        })
    })
}

Component({
    /**
     * 组件的属性列表
     */
    properties: {
        // 图片链接
        item: {
            type: Object,
            value: {},
        },
        store_id: {
            type: Number,
            value: 0,
            observer(e) {
             this.setData({
                 store_id:e
             })
            },

        },
        width: {
            type: String,
            value: '100%'
        },
        height: {
            type: String,
            value: '100%'
        },
        // 是否触发懒加载(暂不支持动态修改 触发懒加载)
        lazy: {
            type: Boolean,
            value: true
        },
        // 触发懒加载的阀值
        threshold: {
            type: Number,
            value: 20
        },
        // 触发懒加载的方向
        direction: {
            type: String,
            value: 'bottom'
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        show: false,
        is_user_show: true,
        is_user: 0,
        showUser: false,
        store_id:0
    },

    /**
     * 组件的方法列表
     */
    methods: {
        //   登录
        login() {
            if (wx.getStorageSync('token') == "") {
                this.setData({
                    is_user_show: false,
                    is_user: 1
                });
            } else if (wx.getStorageSync('token') == "") {
                this.setData({
                    is_user_show: false,
                    is_user: 2
                });
            }
        },
        // 登录遮罩层
        close(e) {
            this.setData({
                is_user_show: e.detail,
                is_user: 0
            });
        },
        // 登陆后更新
        renew(e) {
            this.setData({
                showUser: true,
            });
            wx.setStorageSync('userInfo', e.detail)
            wx.setStorageSync('mobile', e.detail.mobile)
            // console.log(e.detail)
        },
        changeImg(e) {
            const that = this;

            let img = e.currentTarget.dataset.img
            // console.log(img)
            let imgs = JSON.stringify(img)
            if (img.length <= 0) {
                return
            }
            wx.navigateTo({
                url: '/pages/index/swiper/index?img=' + imgs,
            })
        },
        toOrder(e) {
            const that = this
            let store_id = e.currentTarget.dataset.store_id
            let room_id = e.currentTarget.dataset.room_id
            console.log()
            let item = e.currentTarget.dataset.item
            wx.navigateTo({
                url: "/pages/index/roomselect/index?room_id=" + room_id + "&store_id=" + store_id,
            });
            console.log( "/pages/index/roomselect/index?room_id=" + room_id + "&store_id=" + store_id)
        }

    },
    ready() {
        console.log(123,this.data.store_id)
        if (!this.data.lazy) return
        // 监听 元素是否有距离屏幕的情况
        listenEltoScreen.bind(this)({
            elName: '.imgContent',
            attr: this.data.direction,
            value: this.data.threshold,
            isComponent: true
        }).then(() => {
            // console.log(12)
            this.setData({
                show: true
            })
        })
    },
    onPageScroll(e) {
        console.log(e)
    }
})